The present invention relates to Portal-Server using portlets and in particular how remote portlets may be installed, accessed and used by a Portal-Server.
Portals are becoming the focal points for users to access information and applications from many different sources. Typically, Portals get information from local or remote data sources, e.g. from databases, transaction systems, syndicated Content-Providers, or remote web sites, and render and aggregate this information into complex pages to provide information to users in a condensed form. In addition to pure information, many Portals also include applications like e-mail, calendar, organizers, banking, bill presentment, etc. A well-known example is the Yahoo! Portal that provides access to a large amount of content and applications.
Different rendering and selection mechanisms are required for different kinds of information or applications, but all of them rely on the portal's infrastructure and operate on data or resources that are owned by the portal, e.g. user profile information, persistent storage or access to managed content. Consequently, most of today's Portal implementations provide a component model, where pluggable portal component modules referred to as Portlets can be added to the portal infrastructure. Portlets are pluggable components that can be added to Portals and are designed to run inside a portal's portlet container. Portlets may provide different functions ranging from simple rendering of static or dynamic content to application functions such as e-mail, calendar, etc. Portlets are invoked indirectly via the portal application and produce content that is suited for aggregation in larger pages, e.g. portlets should produce mark-up fragments adhering to guidelines that assure that the content generated by different portlets can be aggregated into one page. Typically, portlets run on the Portal-Server, processing input data and rendering content locally. The content for portlets which are displayed very often is cached locally to improve response times, performance and scalability of portals. FIG. 1 shows a weather portlet and a news portlet running on an Internet-Portal. The Portal uses databases to cache weather info and news content locally so that the portlets can display them without delay.
While local portlets typically provide short response times, this approach is not well suited to enable dynamic integration of business applications and information sources into Portals. More and more local portlets running in a Portal environment using Web-Services provided by a Web-Service-Provider. Web-Services may be defined as providing existing or software components into a service-oriented architecture (SOA). Example of such services may be explained by FIG. 2 which covers the following scenario: An employee Portal manager wants to include a human resources service (HR Web-Services) that can calculate the variable pay for employees and an external weather Web-Service that provides weather forecasts for given cities. Human resources portlet (HR Portlet) and a weather portlet run locally on the portal server.
The HR portlet uses a HR Web-Service to calculate the variable pay. A possible implementation is a portlet that by default displays a form to query the required parameters, e.g. the position and last grade of an employee. When the employee enters his data at the HR portlet, it invokes the remote Web-Service to calculate the variable pay based on that data. It receives the result from the Web-Service and displays it as a page fragment. The weather portlet by default displays weather forecasts for configurable locations. It allows the user to select locations through an edit mode. Whenever the Portal displays it, the weather portlet gets the most recent forecasts for the selected locations and renders a page fragment that displays them. To support that HR Web-Service in the Internet, a new architecture was defined, SOA, the Service Oriented Architecture. This new architecture describes how a Web-Service may be found by a user, how a potential user can access such Web-Services, and a language describing the Web-Service.
The communication protocol for these Web-Services is also a new defined protocol, called SOAP which stands for Simple Object Access Protocol.
SOAP is a way for a program running in one kind of operating system to communicate with a program in the same or another kind of an operating system by using preferably the World Wide Web's Hypertext Transfer Protocol (HTTP) and its Extensible Markup Language (XML) as the mechanisms for information exchange. Since Web protocols are installed and available for use by all major operating system platforms, HTTP and XML provide an already at-hand solution to the problem of how programs running under different operating systems in a network can communicate with each other. SOAP specifies exactly how to encode an HTTP-header and an XML-file so that a program in one computer can call a program in another computer and pass it information. It also specifies how the called program can return a response.
The basic architecture of SOAP is shown in FIG. 3. The basic architecture comprises three components, the Service-Providers, the Service-Brokers, and the Service requesters.
The Service-Providers publish the availability of their Web-Services, the Service-Brokers register and categorize the published Web-Services and provide search services, and the Service-Requesters using Service-Broker to find a needed Web-Service and then employing that Web-Service.
A typical SOAP-communication architecture based on the embodiment of FIG. 2 is shown in FIG. 4.
Service-Provider offers a HR Web-Service to calculate the variable pay. Service-Providers publish their Web-Service to Service-Broker (Central-Registry). The Service-Provider knows the semantics of the Web-Service and publishes it in the right category in the Service-Broker's taxonomy. What is published by the Service-Provider to the Service-Broker is called service description. Service descriptions are XML-documents that describe the semantics and the message API (Application Programming Interface) of a certain Web-Service. For example, the service description for an HR Web-Service to calculate the variable pay may include the price of the service, availability, functionality, URL, IDL and so on. IDL, or Interface-Definition-Language, defines the input and output data required by that Web-Service. Service requesters, knowing the Web-Service they need, ask the Service-Broker for a list of services in that category. A Service-Requester receives, by a SOAP-Find response, a service description for the requested Web-Service. The Service Requester uses the IDL for converting the input data format generated by the employee portal manager into a data format required by Web-Service and sends a SOAP-request containing the converted input data to the HR Web-Service. The Web-Service returns a SOAP response containing the result (output data), e.g. the variable pay, to the Service Requester.
Providing portlets to the Portal is tedious. For the above-mentioned HR portlet, either the HR department needs to implement the HR Portlet and give it to one of the administrators of the employee Portal so that he can install it there, or a developer from the employee portal team has to implement the HR portlet to the interface description of the HR Web-Service. For the weather portlet, the Employee Portal team needs to implement a special weather portlet that provides the functionality described above. There is significant effort for the employee portal team to make the two portlets available.
It is therefore an object of the present invention to provide a system and method to provide portlets for Portals by minimizing code at the Portal side.
It is further object of the present invention to provide a simplified procedure for installing, accessing and using remote portlets by Portals.
Finally it is object of the present invention to share portlets between multiple Portals without requiring additional communication components at the Portal side.
These objects have been addressed by the features of the independent claims. Preferred embodiments of the present invention are laid down in the dependent claims.